//
//  NSDate+Sina.swift
//  01-日期处理
//
//  Created by bing on 16/3/30.
//  Copyright © 2016年 bing. All rights reserved.
//

import UIKit

extension NSDate {
    /// 新浪的时间字符串转成系统的NSDate
    class func dateWithSinaString(dateString: String) -> NSDate {
        
        let df = NSDateFormatter()
        // 设置要转换的字符串的格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        // 在真机上还需要制定local
        df.locale = NSLocale(localeIdentifier: "EN")
        // 转成NSDate
        let date = df.dateFromString(dateString) ?? NSDate() // NSDate()当前时间
        
        return date
    }
        
    /*
        刚刚(一分钟内)
        X分钟前(一小时内)
        X小时前(当天)
        昨天 HH:mm(昨天)
        MM-dd HH:mm(一年内)
        yyyy-MM-dd HH:mm(更早期)
    */
    /// 用新浪返回的时间和系统时间比较，可以理解self是新浪返回的时间
    func sinaDateDescription() -> String {
        
        // 时间的比较：NSCalendar
        let calendar = NSCalendar.currentCalendar()
        
        // 是否是当天
        if calendar.isDateInToday(self) {
            // 获取新浪时间和当前时间相差的秒数
            let timeInterval = Int(NSDate().timeIntervalSinceDate(self))
            
            //print("timeInterval:\(timeInterval)")
            
            if timeInterval < 60 {
                // 刚刚一分钟
                return "刚刚"
            } else if timeInterval < 60 * 60 {
                // x分钟前（一小时内）
                return "\(timeInterval / 60)分钟前"
            } else {
                // x小时前（当天）
                return "\(timeInterval / 60 / 60)小时前"
            }
        }
        
        // 后面3中都需啊哟日期格式化
        var formatter = ""
        
        // 是否是昨天
        if calendar.isDateInYesterday(self) {
            formatter = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            // 同一年
            // 判断一年内和更早期
            // NSDate():当前时间
            // 2016-3-30 ,2015-12-31
            // NSComparisonResult
            formatter = "MM-dd HH:mm"
        } else {
            formatter = "yyyy-MM-dd HH:mm"
        }
        
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "EN")
        df.dateFormat = formatter
        return df.stringFromDate(self)
    }
}
